/**
 *
 */
package com.abel.bigwater.dataserver.model.hgd

import io.netty.buffer.ByteBuf

/**
 * 05 0D 0012 0013 4011
 * 类型 通道号 Q 数据 1 Q 数据 2 Q 数据 3
 * Q13
 *
 * @author Abel
 */
class QChannel(count: Short) : HgdChannel<Short>(HgdChannelType.Q_TYPE, count) {
    /**
     * compute length of bytes.
     */
    override fun bufLength() = 2 + 2 * count

    /* (non-Javadoc)
     * @see com.abel.bigwater.dataserver.model.hgd.HgdChannel#parseBuffer(io.netty.buffer.ByteBuf)
     */
    override fun parseBuffer(buf: ByteBuf): Boolean {
        super.parseBuffer(buf)

        for (i in 1..count) {
            values.add(buf.readShort())
        }

        return true
    }

    /* (non-Javadoc)
     * @see com.abel.bigwater.dataserver.model.hgd.HgdChannel#pack(io.netty.buffer.ByteBuf)
     */
    override fun pack(buf: ByteBuf): Boolean {
        super.pack(buf)

        for (i in 1..count) {
            buf.writeShort(values[i].toInt())
        }

        return true
    }

}
